package org.jdcenter.face;

import java.lang.reflect.InvocationTargetException;

import javax.management.Attribute;
import javax.management.AttributeList;
import javax.management.AttributeNotFoundException;
import javax.management.InstanceAlreadyExistsException;
import javax.management.InstanceNotFoundException;
import javax.management.IntrospectionException;
import javax.management.InvalidAttributeValueException;
import javax.management.MBeanException;
import javax.management.MBeanRegistrationException;
import javax.management.MalformedObjectNameException;
import javax.management.NotCompliantMBeanException;
import javax.management.ObjectInstance;
import javax.management.ObjectName;
import javax.management.ReflectionException;

public interface JMXManager {
	
	public ObjectInstance registerMBean(String objName,Object mBean) throws MalformedObjectNameException, NullPointerException, InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException;	
	public ObjectInstance registerMBean(ObjectName objName,Object mBean) throws InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException;	
	public void regsiterAndStartMBean(String objName,Object mBean) throws MalformedObjectNameException, InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException, NullPointerException, IllegalArgumentException, IllegalAccessException, InvocationTargetException;
	public void registerAndStartMBean(ObjectName objName,Object mBean) throws InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException, IllegalArgumentException, IllegalAccessException, InvocationTargetException;
	public void registerAndStartMBean(String objName,Object mBean,String startMethod) throws MalformedObjectNameException, InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException, NullPointerException, IllegalArgumentException, IllegalAccessException, InvocationTargetException;
	public void registerAndStartMBean(ObjectName objName,Object mBean,String startMethod) throws InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException, IllegalArgumentException, IllegalAccessException, InvocationTargetException;
	public void removeMBean(String objName) throws MalformedObjectNameException, NullPointerException, InstanceNotFoundException, IntrospectionException, ReflectionException, MBeanException;
	public void removeMBean(ObjectName objName) throws InstanceNotFoundException, IntrospectionException, ReflectionException, MBeanException;
	public void removeMBean(String objName,String stopMethod) throws MalformedObjectNameException, NullPointerException, InstanceNotFoundException, IntrospectionException, ReflectionException, MBeanException;
	public void removeMBean(ObjectName objName,String stopMethod) throws InstanceNotFoundException, IntrospectionException, ReflectionException, MBeanException;
	public void setAttribute(ObjectName objName,Attribute attribute) throws InstanceNotFoundException, AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException;
	public void setAttributes(ObjectName objName,AttributeList attributes) throws InstanceNotFoundException, AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException;
	public void invoke(ObjectName objName,String operationName,Object[] params,String[] signature) throws InstanceNotFoundException, MBeanException, ReflectionException;
}
